# 输出: 使用计算机向用户返回数据叫做输出
# 输出函数  :  print

# 普通数据输出
print(123)  # 输出数值
print('窗前明月光')  # 输出字符串
print(1 + 3)  # 输出计算式
print('传智', '教育', 520)  # TODO 一次输出多个数据内容

# 输出格式化后的字符串
# 记住: 格式化和print没有任何关系,他只负责输出
# TODO 格式化字符串的格式: '要输出的字符信息 %占位符' % 变量  此时就可以将变量与字符串格式化拼接到一起

# 输出小明今年13岁了
print('小明今年13岁了')
# 过了一年,小明涨了一岁
print('小明今年14岁了')

print('----------------')
# 此后每年输出年龄都需要修改代码,不方便,所以我们希望可以使用变量存储学员年龄,当年龄变化时输出内容也发生变化
age = 13
print('小明今年%d岁了' % age)
age = 14
print('小明今年%d岁了' % age)

# 思考: 为什么说格式化和print没有关系,是字符串的功能
str1 = '小李今年%d岁了' % age
print('程序结束')

# 多占位符的格式化方式
name = '张强'
age = 22
gender = '女'

# 格式化输出,将数据输出到控制台上,输出"学员的名称是张强, 年龄22岁, 性别为女"
# TODO  多占位符格式化字符串方式: '要输入的字符串信息, %占位符1, %占位符2....' % (变量1, 变量2 ....)

# TypeError: %d format: a number is required, not str
# 占位符一定要数据类型准确, %d 接收整型数据  %f 接收浮点型数据 %s 接收字符串类型数据
# print('学员的名称是%s, 年龄%d岁, 性别为%s' % name, age, gender)
# TypeError: not enough arguments for format string
# 在格式化字符串时,百分号后只能识别一个数据,所以如果有多个变量需要使用括号括起来
print('学员的名称是%s, 年龄%d岁, 性别为%s' % (name, age, gender))  # 学员的名称是张强, 年龄22岁, 性别为女

# 注意: 多占位符格式化字符串时,要注意:
# 1. 占位符的数量和变量的数量必须保持一致,不能多,也不能少
# 2. 占位符与变量顺序要依次对应,不能交叉赋值也不能跳跃赋值
# 3. 占位符与变量一定要数据类型完全对应
# 4. 在格式化字符串时,百分号后只能识别一个数据,所以如果有多个变量需要使用括号括起来

print('---------------------------')

# 练习:
# 定义三个变量  自己的姓名(str) 年龄(int) 身高(float)
# 使用格式化输出的方式,输出自己的个人信息
name = '小强'
age = 18
height = 1.76
stu_NO = 12

print('我的名字是%s, 我的年龄是%d岁, 我的身高是%f米,我的学号是%d' % (name, age, height, stu_NO))

print(height)
